﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace ServiciosProductos
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "ServiceCreaciones" en el código, en svc y en el archivo de configuración a la vez.
    public class ServiceCreaciones : IServiceCreaciones
    {
        Ecommerce bd = new Ecommerce();
        public long putProductInterop(ProductCreate product)
        {
            Product productbd = new Product();
            productbd.ProductId = 0;
            productbd.Name = product.Name;
            productbd.Show = product.Show;
            productbd.ShowDate = product.ShowDate;
            productbd.CityId = product.CityId;
            productbd.ArrivalDate = product.ArrivalDate;
            productbd.DepartureDate = product.DepartureDate;
            if (product.TransportationRateId != 0)
                productbd.TransportationRateId = product.TransportationRateId;
            else
                productbd.TransportationRateId = null;
            productbd.ShowRateId = product.ShowRateId;
            if (product.AccommodationRateId != 0)
                productbd.AccommodationRateId = product.AccommodationRateId;
            else
                productbd.AccommodationRateId = null;
            productbd.Image = product.Image;

            bd.Product.InsertOnSubmit(productbd);
            bd.SubmitChanges();
            return productbd.ProductId;
        }

        public Boolean deleteProducto(long idProducto)
        {
            Boolean resultado;
            var consulta = bd.Product.Single(p => p.ProductId == idProducto);
            if(consulta != null){
                bd.Product.DeleteOnSubmit(consulta);
                bd.SubmitChanges();
                resultado = true; 
            }else{
                resultado = true;
            }
            return resultado;
        }

        public Boolean updateProducto(ProductCreate product)
        {
            Boolean resultado;
            var consulta = bd.Product.Single(p => p.ProductId == product.ProductId);
            if (consulta != null)
            {
                if (product.AccommodationRateId != 0)
                    consulta.AccommodationRateId = product.AccommodationRateId;
                else
                    consulta.AccommodationRateId = null;
                consulta.ArrivalDate = product.ArrivalDate;
                consulta.CityId = product.CityId;
                consulta.DepartureDate = product.DepartureDate;
                consulta.Image = product.Image;
                consulta.Name = product.Name;
                consulta.Show = product.Show;
                consulta.ShowDate = product.ShowDate;
                consulta.ShowRateId = product.ShowRateId;
                if (product.TransportationRateId != 0)
                    consulta.TransportationRateId = product.TransportationRateId;
                else
                    consulta.TransportationRateId = null;
                bd.SubmitChanges();
                resultado = true;
            }
            else
            {
                resultado = false;
            }
            return resultado;
        }
    }
}
